package com.tbit.main.service;

import com.tbit.main.pojo.TerPosition;
import com.tbit.main.pojo.TrajectoryBO;

import java.util.List;
import java.util.Map;

/**
 * 终端历史service
 *
 * @author Leon
 * 2019年11月11日 下午9:51:40
 */
public interface HistoryService {
    /**
     * 根据设备编号批量查询
     *
     * @param mapType
     * @param machineNO
     * @param startTime
     * @param endTime
     * @return
     */
    List<TerPosition> getByMachineNOAndTime(Integer mapType, String machineNO, String startTime, String endTime,Integer machineId);

    /**
     * 查询指定时间内里程
     *
     * @param machineNO
     * @param startTime
     * @param endTime
     * @return
     */
    Integer getMileageByMachineNOAndTime(String machineNO, String startTime, String endTime);

    /**
     * 查询指定时间内里程
     *
     * @param machineNO
     * @param startTime
     * @param endTime
     * @return
     */
    Integer getMileageByMachineNOAndTimeTwo(String machineNO, String startTime, String endTime);

    /**
     * 获取最后一次骑行轨迹
     *
     * @param mapType
     * @param machineNO
     * @return
     */
    List<TerPosition> getLastRideHistory(Integer mapType, String machineNO);

    /**
     * 获取最后非订单轨迹
     *
     * @param mapType
     * @param machineNO
     * @return
     */
    List<TerPosition> getLastActiveHistory(Integer mapType, String machineNO);

    /**
     * 根据车辆编号，起始时间段获取轨迹
     *
     * @param terPositions
     * @return
     */
    List<TerPosition> getByMachineNOTime(List<TerPosition> terPositions);

    /**
     * 根据设备编号批量查询
     *
     * @param mapType
     * @param accountUserPhone
     * @param startTime
     * @param endTime
     * @return
     */
    List<TerPosition> getByAccountUserPhoneAndTime(Integer mapType, String accountUserPhone, String startTime, String endTime);

    /**
     * 根据设备编号批量查询轨迹
     *
     * @param machineNO
     * @param startTime
     * @param endTime
     * @return
     */
    TrajectoryBO getTrajectoryByMachineNOAndTime(String machineNO, String startTime, String endTime);

    /**
     * 插入轨迹
     *
     * @param terPosition
     */
    void insert(TerPosition terPosition);

    /**
     * @description: 根据时间范围返回分段查询参数
     * @author: mo.shanyong
     * @date: 2025/4/21 10:27
     * @param: machineNO 设别编号
     * @param: startTime 开始时间
     * @param: endTime 结束时间
     * @param: paramName 查询的参数名
     * @param: checkCount 是否检查数据量
     * @return: java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     */
    List<Map<String, Object>> getSearchParams(String machineNO, String start, String end, String paramName,boolean checkCount);
}  